package com.example.demo.entity;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;

import lombok.Data;

// @Data  // Lombok：自动生成getter、setter、toString、equals、hashCode
// @EqualsAndHashCode(callSuper = false)  // 不调用父类的equals和hashCode
// @Accessors(chain = true)  // 支持链式调用：user.setName("张三").setAge(25)
// @TableName("user")  // 指定数据库表名

@Data
@TableName(value = "user")
public class User  {

    // IdType.AUTO：数据库自增
    // IdType.NONE：无状态，该类型为未设置主键类型
    // IdType.INPUT：手动输入
    // IdType.ASSIGN_ID：分配ID（主键类型为Number或String）
    // IdType.ASSIGN_UUID：分配UUID（主键类型为String）
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    @TableField("name")
    private String name;

    // 普通字段配置
    // value：数据库字段名
    // exist：是否为数据库表字段（默认true）
    // fill：字段自动填充策略
    // FillType
    // FieldFill.DEFAULT：默认不处理
    // FieldFill.INSERT：插入时填充字段
    // FieldFill.UPDATE：更新时填充字段
    // FieldFill.INSERT_UPDATE：插入和更新时填充字段
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    @TableLogic
    @TableField
    private Integer deleted;
}
